/**
 * 
 */
package cn.biplam.front.html;

import cn.biplam.common.wrapper.ErrorMessage;
import cn.biplam.front.html.base.Html;

/**
 * Html input hidden
 * @author 	WangSong 2009-4-6 下午03:02:36
 * @version 1.0
 */
public class HtmlValue extends Html {
	
	private String ID;
	private String name;
	private String value;
	
	/**
	 * 用于页面控制参数容器,不需要Name
	 * @param ID
	 * @param value
	 */
	public HtmlValue(String ID,String value){
		this.ID=ID;
		this.value=value;
	}
	
	/**
	 * 构造方法
	 * @param ID		对象ID
	 * @param name		提交变量名称
	 * @param value		数据内容
	 */
	public HtmlValue(String ID,String name,String value){
		this.ID=ID;
		this.name=name;
		this.value=value;
	}
	
	/**
	 * 获取位于对象起始和结束标签内的 HTML
	 * @param sb
	 * @throws ErrorMessage
	 */
	protected void _getContent(StringBuilder sb) throws ErrorMessage {
		if(this.ID!=null){
			sb.append(" id='");
			sb.append(this.ID);
			sb.append("'");
		}
		if(this.name!=null){
			sb.append(" name='");
			sb.append(this.name);
			sb.append("'");
		}
		if(this.value!=null){
			sb.append(" value=\"");
			sb.append(this.value);
			sb.append("\"");
		}
	}

	/**
	 * 获取对象及其内容的 HTML 形式
	 * @return	对象及其内容的 HTML 形式
	 * @throws ErrorMessage
	 */
	public String draw() throws ErrorMessage {
		StringBuilder sb = new StringBuilder();
		this.getHtml(sb);
		super.writeBind(sb);
		return sb.toString();
	}
	
	/**
	 * 获取对象及其内容的 HTML 形式(不包含客户端绑定脚本)
	 * @param sb
	 * @throws ErrorMessage
	 */
	public void getHtml(StringBuilder sb) throws ErrorMessage {
		sb.append("<input type=hidden");
		this._getContent(sb);
		sb.append(">\n");
	}

	/**
	 * 禁止调用该方法
	 * @param html
	 * @throws ErrorMessage
	 */
	public void put(Html html) throws ErrorMessage {
		//TODO 设置异常类型
		throw new ErrorMessage("不允许向HtmlValue放入Html对象!");
	}

	/**
	 * 替换内容
	 * @param text
	 */
	public void replace(String text){
		if(text != null )
			this.value=text;
		else
			this.value="";
	}

	/**
	 * @return the iD
	 */
	public String getID() {
		return ID;
	}

	/**
	 * @param id the iD to set
	 */
	public void setID(String id) {
		ID = id;
	}

	/**
	 * @return the name
	 */
	public String getName() {
		return name;
	}

	/**
	 * @param name the name to set
	 */
	public void setName(String name) {
		this.name = name;
	}

	/**
	 * @return the value
	 */
	public String getValue() {
		return value;
	}

	/**
	 * @param value the value to set
	 */
	public void setValue(String value) {
		this.value = value;
	}
	
}
